<?php
class Model_Blog extends App_Model_Entity
{
    protected $_data = array(
            'id'   => null, 
            'name' => null,
        );
    protected $_posts=null;
    
    // расширенный геттер умеет ещё и посты возвращать.
    public function __get($field){
        switch($field){
            case 'posts' : return $this->getPosts();
                break;
            default : return parent::__get($field);
        }
    }
    /*
     * добавить удалить пост/ посты
     */
    public function addPost(Model_Post $post)
    {
        $this->_posts[$post->id] = $post;
    }
    
    public function addPosts(array $posts)
    {
        foreach($posts as $post){
            $this->addPost($post);
        }
    }
    
    public function removePost(Model_Post $post)
    {
        if(key_exists($post->id, $this->_posts)){
            unset($this->_posts[$post->id]);
        }
    }
    // вернуть посты из базы используется маппер постов. >_<
    public function getPosts()
    {
        if($this->_posts === null){
            $postsMapper = new Model_PostsMapper();
            $this->_posts = $postsMapper->getPostsByBlog($this);
        }
        return $this->_posts;    
    }
}